package com.lanchetech.merchant.service;


import com.lanchetech.bean.request.*;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.response.SpuResp;
import com.lanchetech.bean.vo.*;
import com.lanchetech.entity.*;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

public interface ProductService {

    ResultData<BasePageResp<SpuResp>> getSpuPage(SpuReq req);

    ResultData<BasePageResp<SpuResp>> getProductPage(SpuReq req);

    BaseResp editSpuAndSku(SpuEditVO spuEditVO);

    ResultData<SpuEditVO> getSpuEditDetail(Long id);

    ResultData<BasePageResp<Spec>> getSpecPage(PageReq req);

    ResultData<List<Spec>> getSpecList();

    ResultData<BasePageResp<Unit>> getUnitPage(PageReq req);

    ResultData<List<Unit>> getUnitList();

    ResultData<BasePageResp<Freight>> getFreightPage(PageReq req);

    BaseResp editFreight(FreightVO freightVO);

    ResultData<FreightVO> getFreightDetail(Long id);

    BaseResp deleteFreight(Long id);

    ResultData<List<Freight>> getFreightList();

    BaseResp editSpuCommission(SpuCommission spuCommission);

    BaseResp deleteProduct(Long id);

    BaseResp editProductHidden(Long id);

    BaseResp batchOfflineProduct(BatchOfflineReq req);

    BaseResp resetSorts(Long startNum, Long endNum);

    BaseResp editChangePrice(EditChangePriceReq req);

    ResultData<ShopStatisticsDataVO> getShopStatisticsData(TimeRangeReq req);

    ResultData<SpuTrendVO> getSpuClickTrend(TimeRangeReq req);

    ResultData<SpuTrendVO> getSpuVisitorTrend(TimeRangeReq req);

    ResultData<SpuTrendVO> getSpuRefundCountTrend(TimeRangeReq req);

    ResultData<SpuTrendVO> getSpuCompleteTrend(TimeRangeReq req);

    ResultData<SpuTrendVO> getSpuCustomerTrend(TimeRangeReq req);

    BaseResp editZone(ZoneReq req);

    ResultData<BasePageResp<Zone>> getZonePage(ZonePageReq req);

    ResultData<ZoneVO> getZoneSpuDetail(Long zoneId);

    BaseResp deleteZone(Long zoneId);

    BaseResp editSpuShopCategory(Long spuId, Long scThirdId);

    BaseResp editBatchSpuShopCategory(List<EditSpuShopCategoryReq> req);

    ResultData<BasePageResp<Sku>> getSkuList(PageReq req);
}